#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cmath>
#include<cstdio>
using namespace std;
int main()
{
	int n = 0;
	int a = 0, i;
	cin >> n;
	for (i = n; i >= 0; i--) {
		cin >> a;
		if (a) {
			if (i != n && a > 0)cout << "+";
			if (a < 0)cout << "-";
			if (abs(a) > 1 || i == 0)cout << abs(a);
			if (i != 0 && i != 1)cout << "x^" << i;
			if (i == 1)cout << "x";
		}
	}
	return 0;
}



//int n;
//int arr[105];
//int main()
//{
//	cin >> n;
//	int flag = 0;
//	int i = 0;
//	for (i = n; i >= 0; --i) {
//		scanf("%d", &arr[i]);
//	}
//	i = n;
//	if (arr[i] != 0) {
//		if (arr[i] != 1 && arr[i] != -1) {
//			cout << arr[i] << "x^" << i;
//			flag = 1;
//		}
//		else if (arr[i] = 1) {
//			cout << "x^" << i;
//			flag = 1;
//		}
//		else if (arr[i] = -1) {
//			cout << "-x^" << i;
//			flag = 1;
//		}
//	}
//	for (i--; i > 0; i--) {
//		if (arr[i] > 0) {
//			if (arr[i] != 1) {
//				if (flag) 
//					cout << '+' << arr[i] << "x^" << i;
//				else
//					cout << arr[i] << "x^" << i;
//			}
//			else {
//				if (flag)
//					cout << '+' << "x^" << i;
//				else
//					cout << "x^" << i;
//			}
//			flag = 1;
//		}
//		else if (arr[i] < 0) {
//			if (arr[i] != -1) {
//					cout << arr[i] << "x^" << i;
//			}
//			else {
//				cout << '-' << "x^" << i;
//			}
//			flag = 1;
//		}
//	}
//	if (arr[0] > 0) {
//		if (flag)
//			cout << '+' << arr[i];
//		else cout << arr[i];
//	}
//	else if (arr[0] < 0) {
//		cout << arr[i];
//	}
//	return 0;
//}